Within the past decade, the advent of world-wide electronic communications systems has enhanced the way in which people can send and receive information. In particular, the capabilities of real-time video and audio systems have greatly improved in recent years. In order to provide services such as video-on-demand and video conferencing to subscribers, an enormous amount of network bandwidth is required. In fact, network bandwidth is often the main inhibitor in the effectiveness of such systems.
In order to overcome the constraints imposed by networks, compression systems have emerged. These systems reduce the amount of video and audio data which must be transmitted by removing redundancy in the picture sequence. At the receiving end, the picture sequence is uncompressed and may be displayed in real-time.
One example of a video compression standard is the Moving Picture Experts Group (“MPEG”) standard. Within the MPEG standard, video compression is defined both within a given picture and between pictures. Video compression within a picture is accomplished by conversion of the digital image from the time domain to the frequency domain by a discrete cosine transform, quantization, variable length coding, and Huffman coding. Video compression between pictures is accomplished via a process referred to as motion estimation, in which a motion vector plus difference data is used to describe the translation of a set of picture elements (pels) from one picture to another.
The ISO MPEG2 standard specifies only the syntax of bitstream and semantics of the decoding process. The choice of coding parameters and tradeoffs in performance versus complexity are left to the encoder developers.
Users of MPEG encoders often desire the ability to change quantization matrix tables between pictures in a sequence of video data. For example, based upon a change in picture complexity from one frame to the next, a user may wish to modify the amount of quantization by changing the quantization matrix tables. To change matrix tables, sufficient time is needed to load the values of the new tables into the quantization unit of the encoder. As a result of the time required to load these values, the switching of matrix tables today cannot be accomplished in real time mode. The user is limited to pausing the encoding, loading the tables and then continuing with the encode process.
In view of the above, and in order to establish commercial advantage, a novel design is desired wherein an encoder is adapted to allow dynamic (i.e., real time) switching of quantization matrix tables without interfering with the encode process.